﻿<?php 
require_once 'application/controllers/admin.php';

##################################################
#	Контролер за менаџирање на корисници		 #
##################################################

//До контролерот имаат пристап корисници
//со администраторски привилегии
class AdminUsers extends Admin{
	
	public function __constructor()
	{
		parent::__construct();
	}
	
	public function index(){
		$this->users();
	}
	
	//Функција за приказ на сите корисници
	public function users(){
		$user = $this->userCheck('admin','admin/main');
		$this->load->helper('form');
		$this->load->model('users_model');
		
		$data['title'] = 'ФИНКИ - Администратор - Корисници';
		$data['include']="admin/adminContent";
		$data['content'] = 'adminUsers/users';
		$data['navbar'] = 'admin/main';
		$data['role'] = $user->role;
		$data['users'] = $this->users_model->getAll();
		
		$this->load->view('masterPage', $data);
		
	}
	
	//Функција за додавање на корисник
	public function addUser(){
		$user = $this->userCheck('admin','admin/main');;
		
		$this->load->helper('form');
		$this->load->model('roles_model');
		$this->load->model('staff_model');
		
		$data['title'] = 'ФИНКИ - Администратор - Додади корисник';
		$data['include']="admin/adminContent";
		$data['content'] = 'adminUsers/addUser';
		$data['navbar'] = 'admin/main';
		$data['roles'] = $this->roles_model->getAll();
		$data['role'] = $user->role;
		$data['profiles'] = $this->staff_model->joinSort('summary','staff.idStaffPk = summary.idStaffFk',array('summary.language'=>'mk'),'idStaffFk','asc');
		
		$this->load->view('masterPage', $data);
	}
	
	//Функција за менување на податоци за корисник
	public function editUser($id){
		$user = $this->userCheck('admin','admin/main');
		
		$this->load->helper('form');
		$this->load->model('users_model');
		$this->load->model('roles_model');
		$this->load->model('summary_model');
		
		$data['title'] = 'ФИНКИ - Администратор - Уреди корисник';
		$data['include']="admin/adminContent";
		$data['content'] = 'adminUsers/editUser';
		$data['navbar'] = 'admin/main';
		$data['user'] = $this->users_model->getBy(array('idUserPk' => $id));
		$data['roles'] = $this->roles_model->getAll();
		$data['role'] = $user->role;
		$data['profiles'] = $this->summary_model->getWhere(array('summary.language'=>'mk'));
		
		$this->load->view('masterPage', $data);
	}
	
	//Функција за валидација и додавање на корисник во база
	public function processUser($id=null){
		$user = $this->userCheck('admin','admin/main');
		
		if(!$this->input->post('submit'))
			redirect('admin/main','refresh');
		
		$this->load->library('form_validation');
		$this->load->model('users_model');
		
		$this->form_validation->set_rules('username', 'username', 'required');
		$this->form_validation->set_rules('password', 'password', 'required');
		$this->form_validation->set_rules('email', 'email', 'required|valid_email');
		
		$username = $this->input->post('username', TRUE);
		$password = $this->input->post('password', TRUE);
		$email = $this->input->post('email', TRUE);
		$role = $this->input->post('role', TRUE);
		$staffProfile = $this->input->post('staffProfile', TRUE);
		$type = $this->input->post('tip', TRUE);
		
		//Дколку не помине валидацијата - враќа на главната страна за корисници
		if ($this->form_validation->run() == FALSE)
		{
			redirect('error','refresh');
		}
		
		$data = array('username' => $username,
				'password' => $password,
				'email' => $email,
				'role' => $role,
				'staffProfile' => $staffProfile
		);

		switch ($type){
			case 1:
				$this->users_model->insert($data);
				break;
			case 2:
				$this->users_model->update(array('idUserPk' => $id),$data);
				break;
		}
		
		redirect('adminUsers/users','refresh');
	}
	
	//Функција за бришење на корисници
	public function deleteUsers(){
		$user = $this->userCheck('admin','admin/main');
		
		$this->load->model('admin_model');
		
		$users = $this->admin_model->getAll();
		
		foreach($users as $user)
			if($this->input->post($user->idUserPk)!=null)
			$this->admin_model->delete(array('idUserPk'=>$user->idUserPk));
		
		redirect('adminUsers/users');
	}
	
	//Функција за менување на пристапот за
	//различните типови на корисници
	public function rolesEditor(){
		$user = $this->userCheck('admin','admin/main');
		$this->load->helper('form');
		$this->load->model('roles_model');
		
		$data['title'] = 'ФИНКИ - Администратор - Улоги';
		$data['include']="admin/adminContent";
		$data['content'] = 'adminUsers/rolesEditor';
		$data['navbar'] = 'admin/main';
		$data['role'] = $user->role;
		$data['roles'] = $this->roles_model->getAll();
		
		$this->load->view('masterPage', $data);
	}
	
	//Функција за додавање на нов тип на корисник
	public function addRole(){
		$user = $this->userCheck('admin','admin/main');
		
		if(!$this->input->post('submit'))
			redirect('admin/main','refresh');
		
		$this->load->library('form_validation');
		$this->load->model('roles_model');
		
		$this->form_validation->set_rules('name', 'name', 'required');
		
		//Дколку не помине валидацијата - враќа на главната страна за вести
		if ($this->form_validation->run() == FALSE)
		{
			redirect('error','refresh');
		}
		
		$name = $this->input->post('name', TRUE);
		$checked = $this->input->post(NULL, TRUE);
		$access = '';
		foreach ($checked as $check)
			if($check!=null && $check != $name && $check != 'Додади') $access.= $check.",";
		
		$data = array('name' => $name,
				'access' => $access,
		);
		
		$this->roles_model->insert($data);
		
		redirect('adminUsers/rolesEditor');
	}
	
	//Функција за запишување на променетиот пристап
	//на корисниците во база
	public function updateRoles(){
		$user = $this->userCheck('admin','admin/main');
		
		$this->load->model('roles_model');
		
		$numRoles = $this->roles_model->countAll();
		$resources = array('admin','news','announcements','activities','questions','users','staff','studies');
		
		for($i=1;$i<=$numRoles;$i++){
			$access = '';
			foreach($resources as $resource)
				if($this->input->post($resource.$i)!=null) $access.=$this->input->post($resource.$i).",";
			
			$this->roles_model->update(array('idRlsPk'=>$i),array('access'=>$access));
		}

		redirect('adminUsers/rolesEditor','refresh');
	}
}